"""
頁面的字段的組成是由：
1. 報表的配置
2. 額外添加的字段合成 （ex：日期、時段等等）
{"key": "3001", "value": "每日利润分析"},
{"key": "3002", "value": "每日整体分析"},
{"key": "3003", "value": "整体分析"},
{"key": "3004", "value": "渠道数据分析"}
"""
from event_rule.dwc.op_event_rule.rule_config import CONFIG
from common.es_core import report_creator
from common.const import IntervalType


def _get_op_user_analysis_key_mapper(index, required_chn=None, time_interval_type='hour'):
    config = CONFIG.get('user', {})
    key_mapper = report_creator.get_key_mapper_list(config.get('values'), index)
    additional_key_mapper = [{'key': 'day', 'name': "日期"}]
    if time_interval_type == IntervalType.HOUR.value:
        additional_key_mapper += [{'key': 'hour', 'name': "时段"}]
    if required_chn:
        additional_key_mapper.append({'key': '_chn', 'name': '渠道'})
    key_mapper = additional_key_mapper + key_mapper
    return key_mapper


def _get_recharge_analysis_key_mapper(index, time_interval_type='hour', required_chn=True):
    config = CONFIG.get('recharge', {})
    key_mapper = report_creator.get_key_mapper_list(config.get('values'), index)
    additional_key_mapper = [{'key': 'day', 'name': "日期"}]
    if time_interval_type == IntervalType.HOUR.value:
        additional_key_mapper += [{'key': 'hour', 'name': "时段"}]
    if required_chn:
        additional_key_mapper += [{'key': '_chn', 'name': '渠道'}]
    key_mapper = additional_key_mapper + key_mapper
    return key_mapper


def _get_daily_analysis_key_mapper(index):
    config = CONFIG.get('daily', {})
    key_mapper = report_creator.get_key_mapper_list(config.get('values'), index)
    key_mapper = [{'key': 'day', 'name': "日期"}] + key_mapper
    return key_mapper


def _get_general_analysis_key_mapper(index):
    return list()


def _get_withdraw_analysis_key_mapper(index, required_chn=None, required_pay_channel=None, time_interval_type='hour'):
    config = CONFIG.get('withdraw', {})
    key_mapper = report_creator.get_key_mapper_list(config.get('values'), index)
    additional_key_mapper = [{'key': 'day', 'name': "日期"}]
    if required_chn:
        additional_key_mapper.append({'key': '_chn', 'name': '渠道'})
    if time_interval_type == IntervalType.HOUR.value:
        additional_key_mapper += [{'key': 'hour', 'name': "时段"}]
    if required_pay_channel:
        additional_key_mapper.append({'key': 'sub_type', 'name': '通道类型'})
    key_mapper = additional_key_mapper + key_mapper
    return key_mapper


KEY_MAPPER_FUNC = {
    '3003': _get_general_analysis_key_mapper,
    '3005': _get_op_user_analysis_key_mapper,
    '3006': _get_recharge_analysis_key_mapper,
    '3007': _get_daily_analysis_key_mapper,
    '3008': _get_withdraw_analysis_key_mapper,
}
